package com.cs.deviceManager.mapper;

import com.cs.deviceManager.domain.DevDevice;

import java.util.List;

/**
 * 设备信息Mapper接口
 * 
 * @author zizige
 * @date 2025-06-30
 */
public interface DevDeviceMapper 
{
    /**
     * 查询设备信息
     * 
     * @param devId 设备信息主键
     * @return 设备信息
     */
    DevDevice selectDevDeviceByDevId(Long devId);

    /**
     * 根据设备编号查询设备信息
     * @param devNumber 设备编号
     * @return 设备信息
     */
    DevDevice selectDevDeviceByDevNumber(String devNumber);


    /**
     * 查询设备信息列表
     * 
     * @param devDevice 设备信息
     * @return 设备信息集合
     */
    List<DevDevice> selectDevDeviceList(DevDevice devDevice);

    /**
     * 新增设备信息
     * 
     * @param devDevice 设备信息
     * @return 结果
     */
    int insertDevDevice(DevDevice devDevice);

    /**
     * 修改设备信息
     * 
     * @param devDevice 设备信息
     * @return 结果
     */
    int updateDevDevice(DevDevice devDevice);

    /**
     * 删除设备信息
     * 
     * @param devId 设备信息主键
     * @return 结果
     */
    int deleteDevDeviceByDevId(Long devId);

    /**
     * 批量删除设备信息
     * 
     * @param devIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteDevDeviceByDevIds(String[] devIds);

    /**
     * 查询指定经纬度附近1KM内的设备
     * 
     * @param latitude 纬度
     * @param longitude 经度
     * @return 设备列表
     */
    List<DevDevice> selectNearbyDevices(java.math.BigDecimal latitude, java.math.BigDecimal longitude,Integer radius);

    /**
     * 查询所有未绑定的设备（经纬度为空的设备）
     * 
     * @return 未绑定的设备列表
     */
    List<DevDevice> selectUnboundDevices();

    /**
     * 解除设备绑定，清空设备经纬度
     * 
     * @param devId 设备ID
     * @return 影响行数
     */
    int unbindDevice(Long devId);


    /**
     * 查询可用设备列表
     * @return DevDevice
     */
    List<DevDevice> selectActiveDevices();
}
